<?php

namespace modelo;

/**
 * A classe totalizador tem uma particularidade em especial por nao conter setters
 * Isso acontece para garantir consistencia nos indices calculados no metodo construtor
 * ja que existe forte denpendencia de alguns indices em relação a outros criando um efeito cascata
 * (Essa classe é carregada com array vindo direto do metodo $_POST)
 */
class Totalizador{
	
	protected $ativoTotal;
	protected $ativoCirculante;
	protected $disponibilidades;
	protected $direitosRealizaveisCurtoPrazo;
	protected $estoque;
	protected $ativoNaoCirculante;
	protected $ativosRealizaveisLongoPrazo;
	protected $investimentos;
	protected $ativoImobilizado;
	protected $intangiveis;
	protected $passivoTotal;
	protected $passivoCirculante;
	protected $passivoNaoCirculante;
	protected $patrimonioLiquido;
	
	protected $arrayIndices = Array();
	
	public function __construct($post){
		
		/**
		 * preenche os campos basicos
		 * todos os campos devem ser preenchidos no formulario para que todos os atrbutos do $post exista
		 * obrigar o cliente a definir valor 0 para campos dos quais nao ira precisar no formulario
		 */
		$this->disponibilidades = $post['caixaRotativo'] + $post['fundoFixo'] + $post['bancosComMovimento'] + $post['numerarioEmTransito'] + $post['aplicacoesCurtissimoPrazo'];
		$this->direitosRealizaveisCurtoPrazo = $post['contasReceberClientes'] + $post['administradoraCartaoCredito'] + $post['chequesApresentar'] + $post['chequesCobranca'] + $post['adiantamentosDiversos'];
		$this->estoque = $post['almoxarifado'] + $post['estoqueMercadorias'];
		$this->ativosRealizaveisLongoPrazo = $post['emprestimosConcedidoSocios'] + $post['depositosJudiciais'];
		$this->investimentos = $post['participacaoOutrasEmpresas'] + $post['obrasArte'];
		$this->ativoImobilizado = $post['moveisUtensilios'] + $post['maquinasEquipamentos'] + $post['veiculos'] + $post['imoveis'];
		$this->intangiveis = $post['licencasDiversas'];
		$this->passivoCirculante = $post['fornecedores'] + $post['saldoNegativoContaBancaria'] + $post['salariosEncargos'] + $post['indenizacoesTrabalhistasEncargosAtrasados'] + $post['obrigacoesFiscais'] + $post['emprestimos'] + $post['outrasIndenizacoes'];
		$this->passivoNaoCirculante = $post['financiamentos'] + $post['emprestimosNaoCirculante'];
		$this->patrimonioLiquido = $post['capitalSocial'];
		
		/**
		 * Preenche o array de indices com os campos basicos
		 */
		 $this->arrayIndices['disponibilidades'] = round($this->disponibilidades, 2);
		 $this->arrayIndices['direitosRealizaveisCurtoPrazo'] = round($this->direitosRealizaveisCurtoPrazo, 2);
		 $this->arrayIndices['estoque'] = round($this->estoque, 2);
		 $this->arrayIndices['ativosRealizaveisLongoPrazo'] = round($this->ativosRealizaveisLongoPrazo, 2);
		 $this->arrayIndices['investimentos'] = round($this->investimentos, 2);
		 $this->arrayIndices['ativoImbilizado'] = round($this->ativoImobilizado, 2);
		 $this->arrayIndices['intangiveis'] = round($this->intangiveis, 2);
		 $this->arrayIndices['passivoCirculante'] = round($this->passivoCirculante, 2);
		 $this->arrayIndices['passivoNaoCirculante'] = round($this->passivoNaoCirculante, 2);
		 $this->arrayIndices['patrimonioLiquido'] = round($this->patrimonioLiquido, 2);
		
		/**
		 * Preenche os campos com dependencias
		 */		
		$this->ativoCirculante = $this->disponibilidades + $this->direitosRealizaveisCurtoPrazo + $this->estoque;		
		$this->ativoNaoCirculante = $this->ativosRealizaveisLongoPrazo + $this->investimentos + $this->ativoImobilizado;		
		$this->ativoTotal = $this->ativoCirculante + $this->ativoNaoCirculante;		
		$this->passivoTotal = $this->passivoCirculante + $this->passivoNaoCirculante;
		
		/**
		 * Preenche o array de indices com os campos com dependencias
		 */
		$this->arrayIndices['ativoCirculante'] = round($this->ativoCirculante, 2);
		$this->arrayIndices['ativoNaoCirculante'] = round($this->ativoNaoCirculante, 2);
		$this->arrayIndices['ativoTotal'] = round($this->ativoTotal, 2);
		$this->arrayIndices['passivoTotal'] = round($this->passivoTotal, 2);
		
		
	}
	
	public function getAtivoTotal(){
		return $this->ativoTotal;
	}
	
	public function getAtivoCirculante(){
		return $this->ativoCirculante;
	}
	
	public function getDisponibilidades(){
		return $this->disponibilidades;
	}
	
	public function getDireitosRealizaveisCurtoPrazo(){
		return $this->direitosRealizaveisCurtoPrazo;	
	}
	
	public function getEstoque(){
		return $this->estoque;
	}
	
	public function getAtivoNaoCirculante(){
		return $this->ativoNaoCirculante;
	}
	
	public function getAtivosRealizaveisLongoPrazo(){
		return $this->ativosRealizaveisLongoPrazo;
	}
	
	public function getInvestimentos(){
		return $this->investimentos;
	}
	
	public function getAtivoImobilizado(){
		return $this->ativoImobilizado;
	}
	
	public function getIntangiveis(){
		return $this->intangiveis;
	}
	
	public function getPassivoTotal(){
		return $this->passivoTotal;
	}
	
	public function getPassivoCirculante(){
		return $this->passivoCirculante;
	}
	
	public function getPassivoNaoCirculante(){
		return $this->passivoNaoCirculante;
	}
	
	public function getPatrimonioLiquido(){
		return $this->patrimonioLiquido;
	}
	
	public function getIndices(){
		return $this->arrayIndices;
	}
	
}


?>